package com.alibaba.cirtus.ots.application.adapter.ability.model.api;

import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.Valid;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.util.List;
@Data
public class SearchOrderOpenApiReq implements Serializable {
    private static final long serialVersionUID = -4824666178983637200L;
    @Length(
            message = "DELIVERY-F-107-00-00-049,来源系统编码,50",
            max = 50
    )
    private String fromSys;
    @NotBlank(
            message = "DELIVERY-F-107-00-00-048,业态编码"
    )
    @Length(
            message = "DELIVERY-F-107-00-00-049,业态编码,50",
            max = 50
    )
    private String businessType;
    @Length(
            message = "DELIVERY-F-107-00-00-049,业务单元编码,50",
            max = 50
    )
    private String businessUnitCode;
    @Length(
            message = "DELIVERY-F-107-00-00-049,履约单号/逆向履约单号,50",
            max = 50
    )
    private String fulfillmentOrderNo;
    @Max(
            message = "DELIVERY-F-107-00-00-060,分页开始页码,10000",
            value = 10000L
    )
    @Min(
            message = "DELIVERY-F-107-00-00-066,分页开始页码,1",
            value = 1L
    )
    private Integer page = 1;
    @Max(
            message = "DELIVERY-F-107-00-00-060,分页每页条数,100",
            value = 100L
    )
    @Min(
            message = "DELIVERY-F-107-00-00-066,分页每页条数,1",
            value = 1L
    )
    private Integer size = 10;
    private Integer fulfillmentDirectionType;
    @Size(
            message = "DELIVERY-F-107-00-00-049,业务单据类型列表,5",
            max = 5
    )
    @Valid
    private List<String> refOrderTypeList;
    @Length(
            message = "DELIVERY-F-107-00-00-049,来源单号,50",
            max = 50
    )
    private String sourceOrderNo;
    private Integer fulfillmentType;
    @Size(
            message = "DELIVERY-F-107-00-00-049,发货仓编码列表,10",
            max = 10
    )
    @Valid
    private List<String> logicShippingWarehouseCodeList;
    @Size(
            message = "DELIVERY-F-107-00-00-049,收货仓编码列表,10",
            max = 10
    )
    @Valid
    private List<String> logicReceivingWarehouseCodeList;
    @Length(
            message = "DELIVERY-F-107-00-00-049,售达方编码,50",
            max = 50
    )
    private String soldToPartyCode;
    @Length(
            message = "DELIVERY-F-107-00-00-049,送达方编码,50",
            max = 50
    )
    private String shipToPartyCode;
    private Integer mainStatus;
    @Length(
            message = "DELIVERY-F-107-00-00-049,期望交货日期（开始日期）,10",
            max = 10
    )
    private String startExpectedDeliveryDate;
    @Length(
            message = "DELIVERY-F-107-00-00-049,期望交货日期（结束日期）,10",
            max = 10
    )
    private String endExpectedDeliveryDate;
    @Length(
            message = "DELIVERY-F-107-00-00-049,创建人,50",
            max = 50
    )
    private String creator;
    @Length(
            message = "DELIVERY-F-107-00-00-049,创建时间（开始时间）,19",
            max = 19
    )
    private String startCreateTime;
    @Length(
            message = "DELIVERY-F-107-00-00-049,创建时间（结束时间）,19",
            max = 19
    )
    private String endCreateTime;
    @Length(
            message = "DELIVERY-F-107-00-00-049,业务单据主单号,50",
            max = 50
    )
    private String refOrderNo;
    @Length(
            message = "DELIVERY-F-107-00-00-049,物料编码,50",
            max = 50
    )
    private String materialCode;
    private Integer detailStatus;
    private Integer close;
}
